文件上传 第四十天

  1. 文件头检测
  2. 文件内容检测
  3. 文件的二次渲染
  4. 图片码的生成
  5. 文件后缀检测

文件头检测

    每个图片文件都是有个特定的16进制内容,或者
10进制内容,jpg,gif、png、的文件头为下图


    应用php函数getimagesize(),获取文章图片及内容,

通过hex16进制软件,修改内部代码,可以通过文件头验证

gif文件最小,可以只留请求头,

jpg和png需要多留一些,防止函数识别不出图片类型


文件内容检测

  对文件的检测存在于开头与结尾的相互照应,只有相互照应才能识别出图片,多余的代码被删除,故而,php代码需要写在开头和结尾照应的合适的地方

文件的二次渲染

    先上传正常的图片,下载后做对比,看不改变的位置,然后做修改,可以上传文件,
注意的一点是:要算好一句话木马所需要的长度,不然会出问题





图片码的生成

windows 生成方式:
copy 1.jpg/b 1.txt/a hack.jpg

linux 生成方式
用>>重定向
cat 1.txt>>1.jpg

文件后缀检测

    文件后缀的核心是 后缀,

绕过的方法是

黑名单

上传 .htaccess 利用apache特性,让目录下的任意文件解析为php程序

上传 a.php::SDATA.jpghu  windows系统特性 .jpg会被截断,剩下a.php

上传 a.php:.jpg windows系统特性 .jpg会被截断,最后剩下a.php 但文件为空

上传a.php.  windows系统特性,.不会保存,最后剩下a.php

上传a.php空格  windows系统特性,空格不会保存,最后剩下a.php

上传 a.php  windows系统特性  不区分大小写,最后能够访问到a.php

截断上传    php5.3.4以下,%00可以截断后缀,/upload/a.php%00a.jpg  最后会保存为/upload/a.php

白名单

上传 a.php::$DATA.jpg  windows系统特性,.jpg会被截断,最后剩下a.php

上传 a.php:.jpg windows系统特性,.jpg会被截断,最后剩下a.php  但文件为空

**** 以上绕过方式是否进行重命名操作,如果进行重命名操作,绕过方式基本没戏

上传 .htaccess
    在apache中,如果网站目录下,存在一个.htaccess文件,那么,apache就会有限解析文件中的配置,如果我们设置一些参数,比如将aabc后缀文件当作php程序执行

如此要考虑,此上传只能在黑名单中进行攻击,如果网站上对上传文件进行重命名,也无法利用

上传 a.php::$DATA.jpg

    在windows系统中,如果文件名字中,包含::$DATA,那么,在进行保存时,就会把

::$DATA和之后的内容丢弃,只留下前面的内容,作为文件的名字

这个在黑名单和白名单中,都可以利用,但是必须是windows系统,同时如果网站对上传文件进行重命名,也无法利用

上传 a.php. a.php空格 a.pHp

    在windows系统中,如果文件名字最后是一个空格,或者是一个.,然后文件在保存时,就会把.和空格去电,最后会保留一个webshell后缀。

    能在黑名单中进行攻击,必须是windows系统

截断:

    php5.3.4以下


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 zhumeng512@qq.com

文章标题:文件上传 第四十天

本文作者:弈少

发布时间:2019-09-14, 14:42:57

最后更新:2019-09-15, 22:23:30

原始链接:http://yoursite.com/2019/09/14/北京渗透测试第四十天 20190912/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏

相册